home *** CD-ROM | disk | FTP | other *** search
Text File | 1978-04-24 | 26.4 KB | 1,038 lines |
- Rem ---------------------------------------------------------------------
- Rem AMOS DEMO V3!
- Rem
- Rem BY Peter Hickman
- Rem
- Rem Music composed and written by Allister Brimble
- Rem
- Rem You cannot change this demo, but you may view it (its a bit untidy-
- Rem sorry) and you may use some of the commands from direct mode.
- Rem For more information please examine the text file on this disk
- Rem its called "IMPORTANT_TEXT_FILE.ASC".
- Rem ---------------------------------------------------------------------
- Close Workbench
- Default
- Screen Close 0
- Led Off
- DISK$="AMOS_DEMO:"
- MEMORY=Chip Free
- NO_FAST_MEM=0
- PASS=0
- CONTROL=0
- If MEMORY<250000
- NO_FAST_MEM=-1
- Close Workbench
- End If
- Repeat
- Load Iff DISK$+"TITLEPAGE.IFF",0
- Screen Hide 0
- Hide On
- Screen Display 0,,-211,,200
- Screen Show 0
- PICCYON_DOWN[0]
- BOUNCE[0]
- Timer=0
- If NO_FAST_MEM=-1
- TUNE
- WAITSET[11700]
- Music Off
- Erase 2
- End If
- If PASS=0 and NO_FAST_MEM=0 Then TUNE
- If PASS=0 Then Get Disc Fonts
- WAITSET[600-Timer]
- Screen Open 2,320,200,2,Lowres
- Screen Hide 2
- Flash Off : Curs Off : Hide On : Cls 0
- Colour 1,$FFF
- Set Font 4
- PAUSE[250]
- CREDITS
- TITLE_PAGE
- HARDSPRITE
- HOTDOG
- GIPPER
- STAR
- HARDSCROLL
- DUAL_PLAYFIELD
- OVERLAY
- CHANGE_FONTS
- PRICE
- PASS=1
- Until False
- End
- Procedure TUNE
- Shared DISK$
- Reserve As Chip Work 2,77806
- Bload DISK$+"AMOS_MUSIC",2
- Music 2
- End Proc
- Procedure SET_UP_TEXT_SCREENS[SCR]
- Screen Open SCR,320,200,2,Lowres
- Colour 1,$FFF
- Flash Off : Curs Off : Hide On : Cls 0
- Screen 2
- End Proc
- Procedure CLOSE_SCREENS
- Screen Close 0 : Hide On
- End Proc
- Procedure CREDITS
- Shared CONTROL
- SET_UP_TEXT_SCREENS[0]
- Cls 0
- MIDDLE["THE AMOS DEMO",25,1,1]
- MIDDLE["PROGRAMMING BY",60,1,0]
- MIDDLE["Peter Hickman",75,1,0]
- MIDDLE["MUSIC BY",105,1,0]
- MIDDLE["Allister Brimble",120,1,0]
- Set Font 0
- MIDDLE["IF YOU WOULD LIKE SOME CONTROL",155,1,0]
- MIDDLE["OVER THIS DEMO PRESS SPACE NOW",165,1,0]
- MIDDLE["There is an IMPORTANT text file",185,1,0]
- MIDDLE["on this disk, please read it.",195,1,0]
- Set Font 4
- APPEAR_5[2,0]
- Clear Key
- Timer=0
- Repeat
- TEMP=Asc(Inkey$)
- Until TEMP<>0 or Mouse Key<>0 or Timer=>600
- If TEMP=32
- Cls 0
- MIDDLE["On some of the",40,1,0]
- MIDDLE["demonstrations you",65,1,0]
- MIDDLE["will be able to move",90,1,0]
- MIDDLE["some of the SPRITES or",115,1,0]
- MIDDLE["BOBS with the mouse.",140,1,0]
- APPEAR_3[2,0]
- WAITSET[300]
- CONTROL=-1
- Else CONTROL=0
- End If
- End Proc
- Procedure TITLE_PAGE
- SET_UP_TEXT_SCREENS[0]
- Cls 0
- MIDDLE["Let your imagination",40,1,0]
- MIDDLE["take control and",65,1,0]
- MIDDLE["design the game",90,1,%0]
- MIDDLE["of your dreams.",115,1,%0]
- APPEAR_1[2,0]
- WAITSET[300]
- Cls 0
- MIDDLE["Over 400 commands",40,1,0]
- MIDDLE["to unleash the raw power",65,1,0]
- MIDDLE["hidden inside your Amiga.",90,1,0]
- APPEAR_2[2,0]
- WAITSET[300]
- End Proc
- Procedure HARDSPRITE
- Shared DISK$
- SET_UP_TEXT_SCREENS[0]
- Cls 0
- MIDDLE["By pushing your Amiga to",40,1,0]
- MIDDLE["its limit AMOS allows you",65,1,0]
- MIDDLE["to exceed the maximum",90,1,0]
- MIDDLE["amount of hardware",115,1,0]
- MIDDLE["SPRITES normally",140,1,0]
- MIDDLE["available to the user.",165,1,0]
- APPEAR_4[2,0]
- Timer=0
- Load DISK$+"HARDSPRITE.ABK"
- WAITSET[400-Timer]
- CLOSE_SCREENS
- Screen Open 3,320,200,16,Lowres
- Screen Hide 3
- Flash Off : Curs Off : Paper 0 : Hide On : Cls 0
- Get Sprite Palette
- Set Sprite Buffer 210
- SKATE$="B:FR0=9T23(10,R0)NR0JB"
- BIKE$="B:FR0=1T8(6,R0)NR0JB"
- GLIDE$="B:FR0=24T29(10,R0)NR0JB"
- PLANE$="B:FR0=30T33(2,R0)NR0JB"
- Screen Show 3 : Hide On : View
- Locate 0,13
- Centre "SPRITE"
- Cdown : Cdown
- Centre "NUMBER"
- Restore IMAGE_DATA
- For LOP=0 To 15
- Read X,Y,IMAGE
- Sprite LOP+20,X Hard(X),Y Hard(3,Y),IMAGE : Wait Vbl
- Channel LOP To Sprite 20+LOP
- Print At(18,17);LOP+1
- If IMAGE=1 Then Anim LOP,BIKE$
- If IMAGE=9 Then Anim LOP,SKATE$
- If IMAGE=24 Then Anim LOP,GLIDE$
- If IMAGE=30 Then Anim LOP,PLANE$
- PAUSE[80]
- Next LOP
- PAUSE[200]
- Print At(17,15);Space$(6);
- Print At(18,17);Space$(3);
- Locate 0,13
- Centre "ANIMATE!"
- Anim On
- PAUSE[600]
- Locate 0,13
- Centre "MOVE IT!"
- For LOP=0 To 12 Step 4
- Move LOP,"M-260,0,200"
- Move LOP+1,"M260,0,200"
- Move LOP+2,"M-220,0,140"
- Move LOP+3,"M220,0,140"
- Next LOP
- Move On
- X Mouse=450
- PAUSE[250]
- Anim Off
- Move Off
- Sprite Off
- Set Sprite Buffer 16
- Screen Close 3
- IMAGE_DATA:
- Data 230,-1,24,60,0,1,180,30,30,100,25,9
- Data 230,49,24,60,50,1,180,80,30,100,75,9
- Data 230,99,24,60,100,1,180,130,30,100,125,9
- Data 230,150,24,60,149,1,180,180,30,100,175,9
- End Proc
- Procedure HOTDOG
- Shared NO_FAST_MEM,DISK$,CONTROL
- SET_UP_TEXT_SCREENS[0]
- Cls 0
- MIDDLE["Software SPRITES (BOBS)",30,1,0]
- MIDDLE["are also available. Their",55,1,0]
- MIDDLE["size and range of colours",80,1,0]
- MIDDLE["are limited only by the",105,1,0]
- MIDDLE["amount of free memory!",130,1,0]
- If CONTROL=-1
- MIDDLE["Use the mouse to control",155,1,0]
- MIDDLE["the giant hotdog.",180,1,0]
- End If
- APPEAR_3[2,0]
- Timer=0
- Load DISK$+"HOTDOGSPRITES.ABK"
- WAITSET[400-Timer]
- If NO_FAST_MEM=0
- Load Iff DISK$+"BACKGR.IFF",7
- Screen Hide 7
- Else
- Screen Open 7,320,200,16,Lowres
- Flash Off : Curs Off : Cls 0 : Hide On
- Get Sprite Palette
- End If
- CLOSE_SCREENS
- Double Buffer
- If CONTROL=-1
- X Mouse=50 : Y Mouse=50
- HOTDOG$="Begin: Let X=XS(7,XM) Let Y=YS(7,YM) Jump Begin"
- Else
- HOTDOG$="B: Let X=50 M -300,0,100 L: Let X=360 M -600,0,200 J L"
- End If
- FASTLEFT$=" Begin: Let X=360 Move -480,0,120 Jump Begin"
- SLOWLEFT$=" Begin: Let X=360 Move -480,0,240 Jump Begin"
- MINILEFT$=" Begin: Let X=360 Move -480,0,480 Jump Begin"
- FASTRIGHT$=" Begin: Let X=-120 Move 440,0,110 Jump Begin"
- SLOWRIGHT$=" Begin: Let X=-120 Move 440,0,220 Jump Begin"
- MINI$=" Begin: Let X=-120 Move 440,0,440 Jump Begin"
- BANNERLEFT$="Begin: Let X=360 Move -680,0,1360 Jump Begin"
- BANNERIGHT$="Begin: Let X=-360 Move 680,0,1360 Jump Begin"
- Restore HOTDOG_POSITIONS
- For LOP=0 To 8
- Read X,Y,IMAGE
- Channel LOP To Bob LOP
- If NO_FAST_MEM
- Bob LOP,X,Y,IMAGE,0
- Else
- Bob LOP,X,Y,IMAGE
- End If
- Next LOP
- Move 0,MINIRIGHT$
- Move 1,FASTLEFT$
- Move 2,SLOWLEFT$
- Move 3,MINILEFT$
- Move 4,FASTRIGHT$
- Move 5,SLOWRIGHT$
- Move 6,BANNERLEFT$
- Move 7,BANNERIGHT$
- Move 8,HOTDOG$
- Move On
- Screen Show 7
- WAITSET[2000]
- Bob Off
- Move Off
- Anim Off
- Screen Close 7
- HOTDOG_POSITIONS:
- Data -120,60,3
- Data 360,80,2,360,20,2
- Data 360,100,5,-120,140,3
- Data -120,0,4,320,0,6
- Data -320,172,7,50,50,1
- End Proc
- Procedure OPEN_GIPPER
- Screen Open 3,320,200,16,Lowres
- Flash Off : Curs Off
- Hide On : Cls 0
- Get Sprite Palette
- End Proc
- Procedure GIPPER
- Shared DISK$
- SET_UP_TEXT_SCREENS[0]
- Cls 0
- MIDDLE["Software SPRITES (BOBS)",40,1,0]
- MIDDLE["can be used in many",65,1,0]
- MIDDLE["different ways.",90,1,0]
- APPEAR_1[2,0]
- Timer=0
- Load DISK$+"GIPPER.ABK"
- WAITSET[200-Timer]
- OPEN_GIPPER
- CLOSE_SCREENS
- Double Buffer
- Bob Update Off
- XSTART=-55
- For LOP=1 To 4
- For IMAGE=14 To 19
- PUT_GIPPER[IMAGE,XSTART]
- Add XSTART,6
- PAUSE[10]
- Next IMAGE
- Next LOP
- For LOP=1 To 8
- Add XSTART,4
- PUT_GIPPER[21,XSTART]
- PAUSE[10]
- Next LOP
- For LOP=1 To 5
- For IMAGE=24 To 31
- PUT_GIPPER[IMAGE,XSTART]
- PAUSE[10]
- Next IMAGE
- Next LOP
- For LOP=1 To 7
- For IMAGE=14 To 19
- PUT_GIPPER[IMAGE,XSTART]
- Add XSTART,6
- PAUSE[10]
- Next IMAGE
- Next LOP
- Screen Close 3
- SET_UP_TEXT_SCREENS[0]
- Cls 0
- MIDDLE["There is no limit to the",40,1,0]
- MIDDLE["amount of images you can",65,1,0]
- MIDDLE["generate. By using just",90,1,0]
- MIDDLE["one BOB dozens can be",115,1,0]
- MIDDLE["displayed with ease.",140,1,0]
- APPEAR_3[2,0]
- WAITSET[400]
- OPEN_GIPPER
- Screen To Front 3
- Screen 3
- CLOSE_SCREENS
- Double Buffer
- XSTART=-315
- For LOP=1 To 8
- For IMAGE=14 To 19
- GIPPERS[IMAGE,XSTART]
- Add XSTART,6
- Next IMAGE
- Next LOP
- GIPPERS[20,XSTART]
- For LOP=1 To 8
- Add XSTART,4
- GIPPERS[21,XSTART]
- Next LOP
- For LOP=1 To 5
- For IMAGE=24 To 31
- GIPPERS[IMAGE,XSTART]
- Next IMAGE
- Next LOP
- For LOP=1 To 9
- For IMAGE=14 To 19
- GIPPERS[IMAGE,XSTART]
- Add XSTART,6
- Next IMAGE
- Next LOP
- Bob Off
- Bob Update On
- Screen Close 3
- End Proc
- Procedure PUT_GIPPER[IMAGE,XSTART]
- Bob 1,XSTART,75,IMAGE,0
- Bob Draw
- Screen Swap : Wait Vbl
- Cls 0
- End Proc
- Procedure GIPPERS[IMAGE,XSTART]
- For Y=1 To 200 Step 50
- For X=0 To 11 Step 2
- Bob 1,XSTART+(X*25),Y,IMAGE,0
- Bob Draw
- Next X
- Next Y
- Screen Swap : Wait Vbl
- Cls 0
- End Proc
- Procedure STAR
- Shared NO_FAST_MEM,DISK$,CONTROL
- Dim PREV_ANI(15),PATH$(15)
- SET_UP_TEXT_SCREENS[0]
- Cls 0
- MIDDLE["Collision detection in AMOS",30,1,0]
- MIDDLE["uses special masks.",55,1,0]
- MIDDLE["This method is very",80,1,0]
- MIDDLE["fast and gives 100%",105,1,0]
- MIDDLE["accuracy.",130,1,0]
- APPEAR_2[2,0]
- WAITSET[300]
- Cls 0
- MIDDLE["Watch the balls in this",30,1,0]
- MIDDLE["next demo. They only",55,1,0]
- MIDDLE["change colour when in",80,1,0]
- MIDDLE["contact with a solid",105,1,0]
- MIDDLE["part of the large star.",130,1,0]
- If CONTROL=-1
- MIDDLE["Use the mouse to",155,1,0]
- MIDDLE["control this star.",180,1,0]
- End If
- APPEAR_4[2,0]
- If NO_FAST_MEM=True Then Erase 1
- Timer=0
- Load Iff DISK$+"STAR.IFF",7
- Screen Hide 7
- WAITSET[400-Timer]
- CLOSE_SCREENS
- Get Bob 1,66,0 To 319,179
- NUM=2
- For LOP1=0 To 9
- For LOP2=0 To 2
- Get Bob NUM,LOP2*15,LOP1*15 To(LOP2*15)+15,(LOP1*15)+15
- Inc NUM
- Next LOP2
- Next LOP1
- Get Bob 1,69,0 To 319,179
- Curs Off
- Hide On
- Make Mask
- Cls 0
- Double Buffer
- Bob 1,0,12,1,0
- If CONTROL=-1
- X Mouse=0 : Y Mouse=0
- STAR$="Begin: Let X=XS(7,XM) Let Y=YS(7,YM) Jump Begin"
- Else
- STAR$="B: L X=0 L Y=0 M 50,10,50 "
- STAR$=STAR$+"M -50,0,25 L: M25,-10,25 M 25,10,25 "
- STAR$=STAR$+"M-25,10,25 M-25,-10,25 J L"
- End If
- BLUE$="Loop: (0,2)(0,3)(0,4)(0,5)(0,6)(0,7)(0,8)(0,9)"
- BLUE$=BLUE$+"(0,10)(0,11)(0,12)(0,13)(0,14)(0,15) Jump Loop"
- RED$="Loop: (0,16)(0,17)(0,18)(0,19),(0,20)(0,21)(0,22)(0,23)"
- RED$=RED$+"(0,24)(0,25)(0,26)(0,27)(0,28)(0,29) Jump Loop"
- PATH$(0)="Begin: Let X=-10 Let Y=102 M 340,0,170"
- PATH$(0)=PATH$(0)+" Let X=330 Let Y=20 M -360,100,140 Jump Begin"
- PATH$(1)="Begin: Let X=330 Let Y=88 M -360,0,120"
- PATH$(1)=PATH$(1)+" Let X=-20 Let Y=220 M 360,-240,180 Jump Begin"
- PATH$(2)="Begin: Let X=330 Let Y=-20 M -360,240,100"
- PATH$(2)=PATH$(2)+" Let X=-10 Let Y=-20 M 340,240,170 Jump Begin"
- PATH$(3)="Begin: Let X=-20 Let Y=20 M 340,240,120"
- PATH$(3)=PATH$(3)+" Let X=330 Let Y=90 M -360,0,180 Jump Begin"
- PATH$(4)="Begin: Let X=280 Let Y=-20 M -200,240,120"
- PATH$(4)=PATH$(4)+" Let X=-20 Let Y=180 M 340,-80,340 Jump Begin"
- OBJECTS=5
- For LOP=0 To OBJECTS-1
- Bob LOP+2,INITX,INITY,2,0
- Channel LOP To Bob LOP+2
- Next LOP
- Screen Show 7
- Channel 15 To Bob 1
- Move 15,STAR$
- Bob 1,0,0,1
- For LOP=0 To OBJECTS-1
- Move LOP,PATH$(LOP)
- Anim LOP,BLUE$
- Next LOP
- Move On
- Anim On
- For LOP=2 To OBJECTS+2
- PREV_ANI(LOP)=True
- Next LOP
- Clear Key
- Timer=0
- Repeat
- For LOP=2 To OBJECTS+2
- HIT=Bob Col(LOP)
- HIT=Col(1)
- If HIT and PREV_ANI(LOP)
- Anim Off LOP-2
- Anim LOP-2,RED$
- Anim On LOP-2
- PREV_ANI(LOP)=False
- Else If HIT=0 and PREV_ANI(LOP)=0
- Anim Off LOP-2
- Anim LOP-2,BLUE$
- Anim On LOP-2
- PREV_ANI(LOP)=True
- End If
- End If
- Next LOP
- TEMP=Asc(Inkey$)
- Until Timer=>2000 or Mouse Key<>0 or TEMP<>0
- Bob Off
- Move Off
- Anim Off
- Screen Close 7
- Rem Screen Open 2,320,200,2,Lowres
- Rem Flash Off : Curs Off : Hide On
- End Proc
- Procedure HARDSCROLL
- Shared NO_FAST_MEM,DISK$
- SET_UP_TEXT_SCREENS[0]
- Cls 0
- MIDDLE["Software and hardware",40,1,0]
- MIDDLE["scrolling are present in",65,1,0]
- MIDDLE["AMOS. Each type can be",90,1,0]
- MIDDLE["activated with a single",115,1,0]
- MIDDLE["command.",140,1,0]
- APPEAR_5[2,0]
- WAITSET[400]
- Cls 0
- MIDDLE["It is possible to use",40,1,0]
- MIDDLE["both SPRITES and BOBS",65,1,0]
- MIDDLE["on any type of",90,1,0]
- MIDDLE["scrolling screen.",115,1,0]
- APPEAR_3[2,0]
- Timer=0
- If NO_FAST_MEM=-1 Then Erase 1
- LANDSCAPE$="B: L X=0 L R0=RA I R0=0 J B "
- LANDSCAPE$=LANDSCAPE$+"L: L X=X+R0 P If X=320 J B"
- LANDSCAPE$=LANDSCAPE$+"J L"
- SHIP$="B: L RB=0 P P P M 100,0,25 L RB=1 P P P M 80,-80,20 L RB=2 "
- SHIP$=SHIP$+" P P P M 0,160,40 L RB=1 P P P M -80,-80,20 L RA=10 L RB=0 P P P "
- SHIP$=SHIP$+" M 100,0,25 M -140,0,140 L RB=0"
- SANI$="B: I RB=0 J S I RB=1 J U I RB=2 J D J B"
- SANI$=SANI$+"S: (10,1)(10,2) J B"
- SANI$=SANI$+"U: (10,3)(10,4) J B"
- SANI$=SANI$+"D: (10,5)(10,6) J B"
- ALIENANI$="B: (5,22)(5,23)(5,26)(5,27)(5,28)(5,29)(5,30) "
- ALIENANI$=ALIENANI$+" (5,31)(5,32) J B"
- ALIENANI2$="B: (10,32)(10,31)(10,30)(10,29)(10,28)(10,27)"
- ALIENANI2$=ALIENANI2$+"(10,26)(10,23)(10,22) J B"
- ALIENMOVE$="F R0=1 T 2 L X=440 M -400,0,50 N R0"
- ALIENMOVE2$="F R0=1 T 2 L X=440 M -400,0,100 N R0"
- EXPLODE$="FR0=13T21(7,R0)NR0(7,33)"
- If NO_FAST_MEM Then Erase 1
- Screen Open 6,640,200,16,Lowres
- Screen Hide 6
- Flash Off : Curs Off : Hide On
- Cls 0
- Screen Display 6,,50,,199
- Channel 0 To Screen Offset 6
- Channel 8 To Sprite 30
- Load DISK$+"SCROLLSPRITES.ABK"
- Load Iff DISK$+"LANDSCAPE.IFF"
- Cls 0,0,0 To 319,137
- Screen Copy 6,0,0,319,200 To 6,320,0
- WAITSET[300-Timer]
- CLOSE_SCREENS
- Get Sprite Palette
- Screen Show 6
- Set Sprite Buffer 128
- Hide On
- Amreg(0)=0
- Move 0,LANDSCAPE$
- For LOP=1 To 6
- Channel LOP To Sprite LOP+19
- Next LOP
- Sprite 20,90,120,1
- Move 1,SHIP$
- Anim 1,SANI$
- Restore SLOW_SHIPS
- For LOP=5 To 6
- Read Y
- Sprite 19+LOP,440,Y,22
- Anim LOP,ALIENANI2$
- Move LOP,ALIENMOVE2$
- Anim On LOP
- Move On LOP
- PAUSE[20]
- Next LOP
- Restore FAST_SHIPS
- For LOP=2 To 4
- Read Y
- Sprite 19+LOP,440,Y,22
- Anim LOP,ALIENANI$
- Move LOP,ALIENMOVE$
- Anim On LOP
- Move On LOP
- PAUSE[30]
- Next LOP
- Anim On 1
- Move On 1
- PAUSE[600]
- Move On 0
- PAUSE[600]
- Amreg(0)=20
- PAUSE[600]
- Amreg(0)=10
- PAUSE[400]
- Amreg(0)=5
- PAUSE[300]
- Amreg(0)=0
- PAUSE[230]
- Move On 0
- PAUSE[40]
- Move 1,"M 120,0,20"
- Sprite 23,440,120,22
- Move 4,"M -160,0,20"
- Move On 1
- Move On 4
- PAUSE[70]
- Sprite Off 23
- Anim Off 23
- Sprite 23,260,120,13
- Anim 1,EXPLODE$
- Anim On 1
- WAITSET[10]
- Anim 4,EXPLODE$
- Anim On 4
- PAUSE[400]
- Sprite Off
- Screen Close 6
- X Mouse=450
- Set Sprite Buffer 16
- SLOW_SHIPS:
- Data 50,135
- FAST_SHIPS:
- Data 200,170,90
- End Proc
- Procedure OVERLAY
- Shared DISK$,NO_FAST_MEM
- SET_UP_TEXT_SCREENS[0]
- Cls
- MIDDLE["AMOS allows up to",40,1,0]
- MIDDLE["eight screens to be",65,1,0]
- MIDDLE["displayed at any",90,1,0]
- MIDDLE["one time.",115,1,0]
- APPEAR_1[2,0]
- WAITSET[300]
- Cls 0
- MIDDLE["Each screen can",40,1,0]
- MIDDLE["be manipulated in a",65,1,0]
- MIDDLE["variety of unusual ways.",90,1,0]
- APPEAR_4[2,0]
- Timer=0
- Screen Close 2
- If NO_FAST_MEM=-1 Then Erase 1
- HAMWINDOW$="Begin: Let Y=-300 M 0,650,65 Jump Begin"
- BACKWINDOW$="Begin: M 320,0,80 M -320,0,80 Jump Begin"
- Load Iff DISK$+"AMOSPIC1.d3",5
- Screen Hide 5
- Load Iff DISK$+"KEYKEEPER",6
- Screen Hide 6
- WAITSET[300-Timer]
- CLOSE_SCREENS
- Screen Show 5
- Screen Show 6
- Screen Open 7,640,8,2,Hires
- Screen Display 5,,45,,255
- Flash Off : Curs Off : Hide On
- Paper 0 : Colour 1,$FFF
- Cls 0
- Centre "OVERLAPPING SCREENS WITH DIFFERENT SIZES, RESOLUTIONS AND COLOURS IS EASY"
- Channel 0 To Screen Display 7
- Channel 1 To Screen Display 6
- Channel 2 To Screen Offset 5
- Move 1,HAMWINDOW$
- Move 2,BACKWINDOW$
- Move On
- Timer=0
- Clear Key
- Repeat
- Screen To Front 7
- For LOP=45 To 293
- Screen Display 7,,LOP,,8
- Wait Vbl
- Next LOP
- Screen To Front 6
- For LOP=293 To 45 Step -1
- Screen Display 7,,LOP,,8
- Wait Vbl
- Next LOP
- TEMP=Asc(Inkey$)
- Until(Timer=>2000) or(Mouse Key<>0) or(TEMP<>0)
- Screen Close 7
- Screen Close 6
- Screen Close 5
- Move Off
- SET_UP_TEXT_SCREENS[2]
- End Proc
- Procedure CHANGE_FONTS
- SET_UP_TEXT_SCREENS[0]
- Cls 0
- Set Font 4
- MIDDLE["AMOS is much more flexible",40,1,0]
- MIDDLE["then any other Amiga",65,1,0]
- MIDDLE["programming language.",90,1,0]
- APPEAR_4[2,0]
- WAITSET[200]
- Cls 0
- MIDDLE["You can even use",40,1,0]
- MIDDLE["standard Duluxe Paint",65,1,0]
- MIDDLE["compatible fonts.",90,1,0]
- APPEAR_5[2,0]
- WAITSET[200]
- For LOP=1 To 9
- Cls 0
- Timer=0
- Set Font LOP
- If LOP<>7
- For LOP2=Text Base To 200-Text Base Step Text Base+4
- MIDDLE["AMOS FONTS",LOP2,1,0]
- Next LOP2
- Screen Copy 2 To 0
- WAITSET[130-Timer]
- End If
- Next LOP
- WAITSET[150]
- Set Font 4
- End Proc
- Procedure DUAL_PLAYFIELD
- Shared DISK$,NO_FAST_MEM
- SET_UP_TEXT_SCREENS[0]
- Cls 0
- MIDDLE["With AMOS you can easily",30,1,0]
- MIDDLE["utilise the unique Amiga",55,1,0]
- MIDDLE["Dual Playfield mode, Which",80,1,0]
- MIDDLE["allows two screens to be",105,1,0]
- MIDDLE["overlayed on top of each",130,1,0]
- MIDDLE["each other.",155,1,0]
- APPEAR_3[2,0]
- WAITSET[300]
- Cls 0
- MIDDLE["This allows you to create",30,1,0]
- MIDDLE["stunning parallax scrolling",55,1,0]
- MIDDLE["games like XENON II and",80,1,0]
- MIDDLE["SILKWORM.",105,1,0]
- APPEAR_2[2,0]
- WAITSET[300]
- If NO_FAST_MEM=-1 Then Erase 1
- Auto View Off
- FRONT$="B:LX=1L:LX=X+4PIX>320JBJL"
- BACK$=" B:LX=1L:LX=X+2PIX>320JBJL"
- OPEN_LONG[6]
- Load Iff DISK$+"DPLAY1.IFF"
- Screen Copy 6,0,0,320,200 To 6,320,0
- OPEN_LONG[7]
- Load Iff DISK$+"DPLAY2.IFF"
- Screen Copy 7,0,0,320,200 To 7,320,0
- Auto View On
- Wait Vbl
- Dual Playfield 6,7
- Restore DUAL_DATA
- Screen 6
- For LOP=8 To 15
- Read REG
- Colour LOP,REG
- Next LOP
- Channel 6 To Screen Offset 6
- Channel 7 To Screen Offset 7
- Move 6,BACK$
- Move 7,FRONT$
- Move On
- WAITSET[2000]
- Move Off
- Screen 0 : Cls 0
- Screen Close 6
- Screen Close 7
- DUAL_DATA:
- Data $0,$333,$666,$AAA,$EEE,$233,$964,$B86
- End Proc
- Procedure OPEN_LONG[SCR]
- Screen Open SCR,640,200,8,Lowres
- Flash Off : Curs Off : Hide On : Cls 0
- End Proc
- Procedure PRICE
- Shared DISK$
- Load DISK$+"LOGO.ABK"
- Screen Open 0,320,200,16,Lowres
- Flash Off : Curs Off : Hide On
- Cls 0
- Screen 2
- Cls 0
- Set Font 4
- MIDDLE["AMOS will be available in",25,1,0]
- MIDDLE["March for "+Chr$(163)+"49.95 from ",38,1,0]
- Set Font 0
- MIDDLE["FOR DETAILED SPECIFICATIONS",85,1,0]
- MIDDLE["WRITE TO:",95,1,0]
- MIDDLE["AMOS INFORMATION",105,1,0]
- MIDDLE["MANDARIN SOFTWARE",115,1,0]
- MIDDLE["EUROPA HOUSE, ADLINGTON PARK",125,1,0]
- MIDDLE["ADLINGTON, MACCLESFIELD",135,1,0]
- MIDDLE["SK10 4NP",145,1,0]
- MIDDLE["PHONE: (0625) 859333",160,1,0]
- MIDDLE["Press space for more information",175,1,0]
- MIDDLE["Any other key",185,1,1]
- MIDDLE["restarts this demo.",195,1,1]
- APPEAR_1[2,0]
- Screen 0
- Get Sprite Palette
- Colour 1,$FFF
- Patch Bob 114,39,1
- Screen 2
- Timer=0
- Repeat
- TEMP=Asc(Inkey$)
- Until Mouse Key<>0 or Timer=>1500 or TEMP<>0
- Bob Off
- If TEMP=32
- ABOUT_EDITOR
- ABOUT_MUSIC
- ABOUT_SCREENS
- ABOUT_SPRITES
- ABOUT_AMAL
- ABOUT_ADVANCED
- ABOUT_MORE
- ABOUT_USES
- End If
- End Proc
- Procedure ABOUT_EDITOR
- INFO_SET["ABOUT AMOS"]
- Text 0,45,"-Edit programs in an advanced"
- Text 0,55," user friendly environment."
- Text 0,75,"-Have up to four programs and"
- Text 0,85," twelve accessories in memory."
- Text 0,105,"-Use the configurable function"
- Text 0,115," key menu to access dozens of"
- Text 0,125," often used commands."
- Text 0,145,"-Port STOS programs from an ST"
- Text 0,155," with relative ease."
- Screen 0
- Cls 0
- Screen 2
- APPEAR_1[2,0]
- WAITSET[650]
- End Proc
- Procedure ABOUT_MUSIC
- INFO_SET["SOUND"]
- Text 0,45,"-Play up to four samples at once"
- Text 0,55," while your program is running!!"
- Text 0,75,"-Play interrupt driven music"
- Text 0,85," created with SoundTracker, GMC"
- Text 0,95," or use the advanced music"
- Text 0,105," editor that comes with AMOS."
- Text 0,125,"-Access the sound chip directly"
- Text 0,135," with powerful commands."
- APPEAR_3[2,0]
- WAITSET[600]
- End Proc
- Procedure ABOUT_SCREENS
- INFO_SET["SCREENS"]
- Text 0,45,"-Load any type of IFF picture,"
- Text 0,55," ie HAM, EHB and Dual Playfield."
- Text 0,75,"-Have up to eight screens"
- Text 0,85," displayed at any one time."
- Text 0,105,"-Clone any screen to produce"
- Text 0,115," spectacular multi-player games."
- Text 0,135,"-Scroll a screen with a single"
- Text 0,145," command."
- APPEAR_4[2,0]
- WAITSET[600]
- End Proc
- Procedure ABOUT_SPRITES
- INFO_SET["SPRITES"]
- Text 0,45,"-Professional sprite editor"
- Text 0,55," allows the creation of gigantic"
- Text 0,65," images."
- Text 0,85,"-Display up to 400 hardware"
- Text 0,95," sprites on one screen."
- Text 0,115,"-Exceed the 4 colour hardware"
- Text 0,125," sprite limitation."
- Text 0,145,"-Grab and examine sprites from"
- Text 0,155," your favourite games using the"
- Text 0,165," special sprite grabber program."
- APPEAR_2[2,0]
- WAITSET[650]
- End Proc
- Procedure ABOUT_AMAL
- INFO_SET["AMAL"]
- Text 0,45,"-Animate and move sprites,"
- Text 0,55," Bobs and even whole screens"
- Text 0,65," with the interrupt driven"
- Text 0,75," AMos Animation Language (AMAL)."
- Text 0,95,"-Display up to 64 animation"
- Text 0,105," sequences."
- Text 0,125,"-An easy-to-use AMAL editor"
- Text 0,135," gives AMOS features absent"
- Text 0,145," from many dedicated animation"
- Text 0,155," packages."
- APPEAR_5[2,0]
- WAITSET[700]
- End Proc
- Procedure ABOUT_ADVANCED
- INFO_SET["ADVANCED FEATURES"]
- Text 0,45,"-Directly modify the copper list,"
- Text 0,55," giving complete control over"
- Text 0,65," the building blocks which make"
- Text 0,75," up all Amiga screens."
- Text 0,95,"-Access all the Standard disk"
- Text 0,105," functions without having to"
- Text 0,115," open external libraries, AMOS"
- Text 0,125," has them built in!"
- Text 0,145,"-Use any standard Amiga font to"
- Text 0,155," produce high quality displays."
- Text 0,175,"-Add your own commands to AMOS"
- Text 0,185," with a unique extension system."
- APPEAR_1[2,0]
- WAITSET[700]
- End Proc
- Procedure ABOUT_MORE
- INFO_SET["MORE ADVANCED FEATURES"]
- Text 0,45,"-Use procedures with parameter"
- Text 0,55," passing and error detection."
- Text 0,75,"-Create highly structured"
- Text 0,85," programs with the IF-ENDIF"
- Text 0,95," constructs."
- Text 0,115,"-Commands unique to AMOS give"
- Text 0,125," the system unparalled speed"
- Text 0,135," in numerical processing."
- APPEAR_3[2,0]
- WAITSET[600]
- End Proc
- Procedure ABOUT_USES
- INFO_SET["USES FOR AMOS"]
- Text 0,45,"-As an advanced development tool"
- Text 0,55," for games."
- Text 0,75,"-As a tool to develop"
- Text 0,85," educational or utility"
- Text 0,95," software."
- Text 0,115,"-As a system to produce"
- Text 0,125," animation within an academic"
- Text 0,135," or commercial environment."
- Text 0,155,"-As part of a video titling"
- Text 0,165," system."
- Text 0,185,"-As a teaching aid for advanced"
- Text 0,195," level students."
- APPEAR_5[2,0]
- WAITSET[700]
- End Proc
- Procedure INFO_SET[T$]
- Cls 0
- Set Font 4
- MIDDLE[T$,20,1,1]
- Set Font 0
- End Proc
- Procedure PAUSE[T]
- For LOP=1 To T*100
- Next LOP
- End Proc
- Procedure WAITSET[T]
- Timer=0
- Clear Key
- Repeat
- TEMP1=Asc(Inkey$)
- Until Mouse Key<>0 or TEMP1<>0 or Timer=>T
- End Proc
- Procedure MIDDLE[T$,Y,C,FLAG]
- Screen 2
- Gr Writing 0
- Ink C
- Set Text FLAG
- TEMP=Text Length(T$)
- MIDDLE=(320-TEMP)/2
- Text MIDDLE,Y,T$
- End Proc
- Procedure APPEAR_1[SOURCE,DEST]
- Screen To Front DEST
- Screen DEST
- Get Palette SOURCE
- For LOP=0 To 99 Step 2
- Y=LOP*2
- Y2=197-(Y-1)
- Screen Copy SOURCE,0,Y,320,Y+2 To DEST,0,Y
- Screen Copy SOURCE,0,Y2,320,Y2+2 To DEST,0,Y2
- PAUSE[10]
- Next LOP
- Screen SOURCE
- End Proc
- Procedure APPEAR_2[SOURCE,DEST]
- Screen To Front DEST
- Screen DEST
- Get Palette SOURCE
- For LOP=0 To 159 Step 2
- X=LOP*2
- X2=317-(X-1)
- Screen Copy SOURCE,X,0,X+2,200 To DEST,X,0
- Screen Copy SOURCE,X2,0,X2+2,200 To DEST,X2,0
- PAUSE[5]
- Next LOP
- Screen SOURCE
- End Proc
- Procedure APPEAR_3[SOURCE,DEST]
- Screen To Front DEST
- Screen DEST
- Get Palette SOURCE
- For LOP=0 To 319 Step 2
- X=LOP
- X2=318-(X-1)
- Screen Copy SOURCE,X,0,X+1,200 To DEST,X,0
- Screen Copy SOURCE,X2,0,X2+1,200 To DEST,X2,0
- Next LOP
- Screen SOURCE
- End Proc
- Procedure APPEAR_4[SOURCE,DEST]
- Screen To Front DEST
- Screen DEST
- Get Palette SOURCE
- For X=0 To 39
- For Y=0 To X
- Screen Copy SOURCE,(X-Y)*16,Y*10,(X-Y+1)*16,(Y+1)*10 To DEST,(X-Y)*16,Y*10
- Next Y
- Next X
- Screen SOURCE
- End Proc
- Procedure APPEAR_5[SOURCE,DEST]
- Screen To Front DEST
- Screen DEST
- Get Palette SOURCE
- XAXIS=20
- YAXIS=20
- XMID=10
- YMID=10
- For Y=0 To YAXIS
- C=Y
- For X=XMID To 0 Step -1
- If C>0
- Screen Copy SOURCE,X*16,(YMID-C)*10,(XAXIS-X)*16,(YMID+C)*10 To DEST,X*16,(YMID-C)*10
- End If
- Dec C
- Next X
- Next Y
- Screen SOURCE
- End Proc
- Procedure PICCYON_DOWN[SCR]
- For Y=-211 To 50 Step 15
- Screen Display SCR,,Y,,200
- Wait Vbl
- Next
- End Proc
- Procedure BOUNCE[SCR]
- For LOP=30 To 0 Step -10
- For LOP1=1 To LOP Step 5
- Screen Display SCR,,50-LOP1,,200
- View
- Wait Vbl
- Next LOP1
- For LOP2=LOP To 1 Step -5
- Screen Display SCR,,50-LOP2,,200
- View
- Wait Vbl
- Next LOP2
- Next LOP
- Screen Display 0,,50,,200
- View
- End Proc
-